package com.guigu.gulicommon.config;

import com.guigu.gulicommon.context.UserContext;
import feign.RequestInterceptor;
import lombok.extern.log4j.Log4j2;
import org.springframework.context.annotation.Bean;

/**
 * @author 陈俊杰
 * @version 1.0
 * @since 2024/8/15 00:18
 */
//@Configuration
@Log4j2
public class FeignConfig {

    @Bean
    public RequestInterceptor userInfoInterceptor() {
        return requestTemplate -> {
            Long userId;
            String token;
            //如果获取不到用户信息,就不设置
            try {
                userId = UserContext.getInstance().getCurrentUser().getId();
                token = UserContext.getInstance().getCurrentUser().getToken();
            } catch (NullPointerException e) {
                log.warn("openfeign中未携带用户信息");
                return;
            }
            //  为什么上面这行代码可以从UserContext里取用户信息，因为之前的服务中的信息是网关给的，这个时候请求头里是带了用户信息的
            requestTemplate.header("gulimall-userId", userId.toString());
            requestTemplate.header("token", token);
            log.info("openfeign中携带的用户Id为:{}", userId);

        };
    }
}
